/*
 * An XML document type.
 * Localname: task
 * Namespace: urn:jbpm.org:jpdl-3.2
 * Java type: x2.orgJpdl3.jbpm.TaskDocument
 *
 * Automatically generated - do not modify.
 */
package x2.orgJpdl3.jbpm.impl;
/**
 * A document containing one task(@urn:jbpm.org:jpdl-3.2) element.
 *
 * This is a complex type.
 */
public class TaskDocumentImpl extends org.apache.xmlbeans.impl.values.XmlComplexContentImpl implements x2.orgJpdl3.jbpm.TaskDocument
{
    private static final long serialVersionUID = 1L;
    
    public TaskDocumentImpl(org.apache.xmlbeans.SchemaType sType)
    {
        super(sType);
    }
    
    private static final javax.xml.namespace.QName TASK$0 = 
        new javax.xml.namespace.QName("urn:jbpm.org:jpdl-3.2", "task");
    
    
    /**
     * Gets the "task" element
     */
    public x2.orgJpdl3.jbpm.TaskDocument.Task getTask()
    {
        synchronized (monitor())
        {
            check_orphaned();
            x2.orgJpdl3.jbpm.TaskDocument.Task target = null;
            target = (x2.orgJpdl3.jbpm.TaskDocument.Task)get_store().find_element_user(TASK$0, 0);
            if (target == null)
            {
                return null;
            }
            return target;
        }
    }
    
    /**
     * Sets the "task" element
     */
    public void setTask(x2.orgJpdl3.jbpm.TaskDocument.Task task)
    {
        synchronized (monitor())
        {
            check_orphaned();
            x2.orgJpdl3.jbpm.TaskDocument.Task target = null;
            target = (x2.orgJpdl3.jbpm.TaskDocument.Task)get_store().find_element_user(TASK$0, 0);
            if (target == null)
            {
                target = (x2.orgJpdl3.jbpm.TaskDocument.Task)get_store().add_element_user(TASK$0);
            }
            target.set(task);
        }
    }
    
    /**
     * Appends and returns a new empty "task" element
     */
    public x2.orgJpdl3.jbpm.TaskDocument.Task addNewTask()
    {
        synchronized (monitor())
        {
            check_orphaned();
            x2.orgJpdl3.jbpm.TaskDocument.Task target = null;
            target = (x2.orgJpdl3.jbpm.TaskDocument.Task)get_store().add_element_user(TASK$0);
            return target;
        }
    }
    /**
     * An XML task(@urn:jbpm.org:jpdl-3.2).
     *
     * This is a complex type.
     */
    public static class TaskImpl extends org.apache.xmlbeans.impl.values.XmlComplexContentImpl implements x2.orgJpdl3.jbpm.TaskDocument.Task
    {
        private static final long serialVersionUID = 1L;
        
        public TaskImpl(org.apache.xmlbeans.SchemaType sType)
        {
            super(sType);
        }
        
        private static final javax.xml.namespace.QName DESCRIPTION$0 = 
            new javax.xml.namespace.QName("urn:jbpm.org:jpdl-3.2", "description");
        private static final javax.xml.namespace.QName ASSIGNMENT$2 = 
            new javax.xml.namespace.QName("urn:jbpm.org:jpdl-3.2", "assignment");
        private static final javax.xml.namespace.QName CONTROLLER$4 = 
            new javax.xml.namespace.QName("urn:jbpm.org:jpdl-3.2", "controller");
        private static final javax.xml.namespace.QName EVENT$6 = 
            new javax.xml.namespace.QName("urn:jbpm.org:jpdl-3.2", "event");
        private static final javax.xml.namespace.QName TIMER$8 = 
            new javax.xml.namespace.QName("urn:jbpm.org:jpdl-3.2", "timer");
        private static final javax.xml.namespace.QName REMINDER$10 = 
            new javax.xml.namespace.QName("urn:jbpm.org:jpdl-3.2", "reminder");
        private static final javax.xml.namespace.QName NAME$12 = 
            new javax.xml.namespace.QName("", "name");
        private static final javax.xml.namespace.QName BLOCKING$14 = 
            new javax.xml.namespace.QName("", "blocking");
        private static final javax.xml.namespace.QName SIGNALLING$16 = 
            new javax.xml.namespace.QName("", "signalling");
        private static final javax.xml.namespace.QName DESCRIPTION2$18 = 
            new javax.xml.namespace.QName("", "description");
        private static final javax.xml.namespace.QName DUEDATE$20 = 
            new javax.xml.namespace.QName("", "duedate");
        private static final javax.xml.namespace.QName SWIMLANE$22 = 
            new javax.xml.namespace.QName("", "swimlane");
        private static final javax.xml.namespace.QName PRIORITY$24 = 
            new javax.xml.namespace.QName("", "priority");
        private static final javax.xml.namespace.QName NOTIFY$26 = 
            new javax.xml.namespace.QName("", "notify");
        
        
        /**
         * Gets a List of "description" elements
         */
        public java.util.List<java.lang.String> getDescriptionList()
        {
            final class DescriptionList extends java.util.AbstractList<java.lang.String>
            {
                public java.lang.String get(int i)
                    { return TaskImpl.this.getDescriptionArray(i); }
                
                public java.lang.String set(int i, java.lang.String o)
                {
                    java.lang.String old = TaskImpl.this.getDescriptionArray(i);
                    TaskImpl.this.setDescriptionArray(i, o);
                    return old;
                }
                
                public void add(int i, java.lang.String o)
                    { TaskImpl.this.insertDescription(i, o); }
                
                public java.lang.String remove(int i)
                {
                    java.lang.String old = TaskImpl.this.getDescriptionArray(i);
                    TaskImpl.this.removeDescription(i);
                    return old;
                }
                
                public int size()
                    { return TaskImpl.this.sizeOfDescriptionArray(); }
                
            }
            
            synchronized (monitor())
            {
                check_orphaned();
                return new DescriptionList();
            }
        }
        
        /**
         * Gets array of all "description" elements
         * @deprecated
         */
        public java.lang.String[] getDescriptionArray()
        {
            synchronized (monitor())
            {
                check_orphaned();
                java.util.List<org.apache.xmlbeans.XmlString> targetList = new java.util.ArrayList<org.apache.xmlbeans.XmlString>();
                get_store().find_all_element_users(DESCRIPTION$0, targetList);
                java.lang.String[] result = new java.lang.String[targetList.size()];
                for (int i = 0, len = targetList.size() ; i < len ; i++)
                    result[i] = ((org.apache.xmlbeans.SimpleValue)targetList.get(i)).getStringValue();
                return result;
            }
        }
        
        /**
         * Gets ith "description" element
         */
        public java.lang.String getDescriptionArray(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_element_user(DESCRIPTION$0, i);
                if (target == null)
                {
                    throw new IndexOutOfBoundsException();
                }
                return target.getStringValue();
            }
        }
        
        /**
         * Gets (as xml) a List of "description" elements
         */
        public java.util.List<org.apache.xmlbeans.XmlString> xgetDescriptionList()
        {
            final class DescriptionList extends java.util.AbstractList<org.apache.xmlbeans.XmlString>
            {
                public org.apache.xmlbeans.XmlString get(int i)
                    { return TaskImpl.this.xgetDescriptionArray(i); }
                
                public org.apache.xmlbeans.XmlString set(int i, org.apache.xmlbeans.XmlString o)
                {
                    org.apache.xmlbeans.XmlString old = TaskImpl.this.xgetDescriptionArray(i);
                    TaskImpl.this.xsetDescriptionArray(i, o);
                    return old;
                }
                
                public void add(int i, org.apache.xmlbeans.XmlString o)
                    { TaskImpl.this.insertNewDescription(i).set(o); }
                
                public org.apache.xmlbeans.XmlString remove(int i)
                {
                    org.apache.xmlbeans.XmlString old = TaskImpl.this.xgetDescriptionArray(i);
                    TaskImpl.this.removeDescription(i);
                    return old;
                }
                
                public int size()
                    { return TaskImpl.this.sizeOfDescriptionArray(); }
                
            }
            
            synchronized (monitor())
            {
                check_orphaned();
                return new DescriptionList();
            }
        }
        
        /**
         * Gets array of all "description" elements
         * @deprecated
         */
        public org.apache.xmlbeans.XmlString[] xgetDescriptionArray()
        {
            synchronized (monitor())
            {
                check_orphaned();
                java.util.List<org.apache.xmlbeans.XmlString> targetList = new java.util.ArrayList<org.apache.xmlbeans.XmlString>();
                get_store().find_all_element_users(DESCRIPTION$0, targetList);
                org.apache.xmlbeans.XmlString[] result = new org.apache.xmlbeans.XmlString[targetList.size()];
                targetList.toArray(result);
                return result;
            }
        }
        
        /**
         * Gets (as xml) ith "description" element
         */
        public org.apache.xmlbeans.XmlString xgetDescriptionArray(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.XmlString target = null;
                target = (org.apache.xmlbeans.XmlString)get_store().find_element_user(DESCRIPTION$0, i);
                if (target == null)
                {
                    throw new IndexOutOfBoundsException();
                }
                return (org.apache.xmlbeans.XmlString)target;
            }
        }
        
        /**
         * Returns number of "description" element
         */
        public int sizeOfDescriptionArray()
        {
            synchronized (monitor())
            {
                check_orphaned();
                return get_store().count_elements(DESCRIPTION$0);
            }
        }
        
        /**
         * Sets array of all "description" element
         */
        public void setDescriptionArray(java.lang.String[] descriptionArray)
        {
            synchronized (monitor())
            {
                check_orphaned();
                arraySetterHelper(descriptionArray, DESCRIPTION$0);
            }
        }
        
        /**
         * Sets ith "description" element
         */
        public void setDescriptionArray(int i, java.lang.String description)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_element_user(DESCRIPTION$0, i);
                if (target == null)
                {
                    throw new IndexOutOfBoundsException();
                }
                target.setStringValue(description);
            }
        }
        
        /**
         * Sets (as xml) array of all "description" element
         */
        public void xsetDescriptionArray(org.apache.xmlbeans.XmlString[]descriptionArray)
        {
            synchronized (monitor())
            {
                check_orphaned();
                arraySetterHelper(descriptionArray, DESCRIPTION$0);
            }
        }
        
        /**
         * Sets (as xml) ith "description" element
         */
        public void xsetDescriptionArray(int i, org.apache.xmlbeans.XmlString description)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.XmlString target = null;
                target = (org.apache.xmlbeans.XmlString)get_store().find_element_user(DESCRIPTION$0, i);
                if (target == null)
                {
                    throw new IndexOutOfBoundsException();
                }
                target.set(description);
            }
        }
        
        /**
         * Inserts the value as the ith "description" element
         */
        public void insertDescription(int i, java.lang.String description)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = 
                    (org.apache.xmlbeans.SimpleValue)get_store().insert_element_user(DESCRIPTION$0, i);
                target.setStringValue(description);
            }
        }
        
        /**
         * Appends the value as the last "description" element
         */
        public void addDescription(java.lang.String description)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().add_element_user(DESCRIPTION$0);
                target.setStringValue(description);
            }
        }
        
        /**
         * Inserts and returns a new empty value (as xml) as the ith "description" element
         */
        public org.apache.xmlbeans.XmlString insertNewDescription(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.XmlString target = null;
                target = (org.apache.xmlbeans.XmlString)get_store().insert_element_user(DESCRIPTION$0, i);
                return target;
            }
        }
        
        /**
         * Appends and returns a new empty value (as xml) as the last "description" element
         */
        public org.apache.xmlbeans.XmlString addNewDescription()
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.XmlString target = null;
                target = (org.apache.xmlbeans.XmlString)get_store().add_element_user(DESCRIPTION$0);
                return target;
            }
        }
        
        /**
         * Removes the ith "description" element
         */
        public void removeDescription(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                get_store().remove_element(DESCRIPTION$0, i);
            }
        }
        
        /**
         * Gets a List of "assignment" elements
         */
        public java.util.List<x2.orgJpdl3.jbpm.AssignmentDocument.Assignment> getAssignmentList()
        {
            final class AssignmentList extends java.util.AbstractList<x2.orgJpdl3.jbpm.AssignmentDocument.Assignment>
            {
                public x2.orgJpdl3.jbpm.AssignmentDocument.Assignment get(int i)
                    { return TaskImpl.this.getAssignmentArray(i); }
                
                public x2.orgJpdl3.jbpm.AssignmentDocument.Assignment set(int i, x2.orgJpdl3.jbpm.AssignmentDocument.Assignment o)
                {
                    x2.orgJpdl3.jbpm.AssignmentDocument.Assignment old = TaskImpl.this.getAssignmentArray(i);
                    TaskImpl.this.setAssignmentArray(i, o);
                    return old;
                }
                
                public void add(int i, x2.orgJpdl3.jbpm.AssignmentDocument.Assignment o)
                    { TaskImpl.this.insertNewAssignment(i).set(o); }
                
                public x2.orgJpdl3.jbpm.AssignmentDocument.Assignment remove(int i)
                {
                    x2.orgJpdl3.jbpm.AssignmentDocument.Assignment old = TaskImpl.this.getAssignmentArray(i);
                    TaskImpl.this.removeAssignment(i);
                    return old;
                }
                
                public int size()
                    { return TaskImpl.this.sizeOfAssignmentArray(); }
                
            }
            
            synchronized (monitor())
            {
                check_orphaned();
                return new AssignmentList();
            }
        }
        
        /**
         * Gets array of all "assignment" elements
         * @deprecated
         */
        public x2.orgJpdl3.jbpm.AssignmentDocument.Assignment[] getAssignmentArray()
        {
            synchronized (monitor())
            {
                check_orphaned();
                java.util.List<x2.orgJpdl3.jbpm.AssignmentDocument.Assignment> targetList = new java.util.ArrayList<x2.orgJpdl3.jbpm.AssignmentDocument.Assignment>();
                get_store().find_all_element_users(ASSIGNMENT$2, targetList);
                x2.orgJpdl3.jbpm.AssignmentDocument.Assignment[] result = new x2.orgJpdl3.jbpm.AssignmentDocument.Assignment[targetList.size()];
                targetList.toArray(result);
                return result;
            }
        }
        
        /**
         * Gets ith "assignment" element
         */
        public x2.orgJpdl3.jbpm.AssignmentDocument.Assignment getAssignmentArray(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.AssignmentDocument.Assignment target = null;
                target = (x2.orgJpdl3.jbpm.AssignmentDocument.Assignment)get_store().find_element_user(ASSIGNMENT$2, i);
                if (target == null)
                {
                    throw new IndexOutOfBoundsException();
                }
                return target;
            }
        }
        
        /**
         * Returns number of "assignment" element
         */
        public int sizeOfAssignmentArray()
        {
            synchronized (monitor())
            {
                check_orphaned();
                return get_store().count_elements(ASSIGNMENT$2);
            }
        }
        
        /**
         * Sets array of all "assignment" element
         */
        public void setAssignmentArray(x2.orgJpdl3.jbpm.AssignmentDocument.Assignment[] assignmentArray)
        {
            synchronized (monitor())
            {
                check_orphaned();
                arraySetterHelper(assignmentArray, ASSIGNMENT$2);
            }
        }
        
        /**
         * Sets ith "assignment" element
         */
        public void setAssignmentArray(int i, x2.orgJpdl3.jbpm.AssignmentDocument.Assignment assignment)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.AssignmentDocument.Assignment target = null;
                target = (x2.orgJpdl3.jbpm.AssignmentDocument.Assignment)get_store().find_element_user(ASSIGNMENT$2, i);
                if (target == null)
                {
                    throw new IndexOutOfBoundsException();
                }
                target.set(assignment);
            }
        }
        
        /**
         * Inserts and returns a new empty value (as xml) as the ith "assignment" element
         */
        public x2.orgJpdl3.jbpm.AssignmentDocument.Assignment insertNewAssignment(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.AssignmentDocument.Assignment target = null;
                target = (x2.orgJpdl3.jbpm.AssignmentDocument.Assignment)get_store().insert_element_user(ASSIGNMENT$2, i);
                return target;
            }
        }
        
        /**
         * Appends and returns a new empty value (as xml) as the last "assignment" element
         */
        public x2.orgJpdl3.jbpm.AssignmentDocument.Assignment addNewAssignment()
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.AssignmentDocument.Assignment target = null;
                target = (x2.orgJpdl3.jbpm.AssignmentDocument.Assignment)get_store().add_element_user(ASSIGNMENT$2);
                return target;
            }
        }
        
        /**
         * Removes the ith "assignment" element
         */
        public void removeAssignment(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                get_store().remove_element(ASSIGNMENT$2, i);
            }
        }
        
        /**
         * Gets a List of "controller" elements
         */
        public java.util.List<x2.orgJpdl3.jbpm.Delegation> getControllerList()
        {
            final class ControllerList extends java.util.AbstractList<x2.orgJpdl3.jbpm.Delegation>
            {
                public x2.orgJpdl3.jbpm.Delegation get(int i)
                    { return TaskImpl.this.getControllerArray(i); }
                
                public x2.orgJpdl3.jbpm.Delegation set(int i, x2.orgJpdl3.jbpm.Delegation o)
                {
                    x2.orgJpdl3.jbpm.Delegation old = TaskImpl.this.getControllerArray(i);
                    TaskImpl.this.setControllerArray(i, o);
                    return old;
                }
                
                public void add(int i, x2.orgJpdl3.jbpm.Delegation o)
                    { TaskImpl.this.insertNewController(i).set(o); }
                
                public x2.orgJpdl3.jbpm.Delegation remove(int i)
                {
                    x2.orgJpdl3.jbpm.Delegation old = TaskImpl.this.getControllerArray(i);
                    TaskImpl.this.removeController(i);
                    return old;
                }
                
                public int size()
                    { return TaskImpl.this.sizeOfControllerArray(); }
                
            }
            
            synchronized (monitor())
            {
                check_orphaned();
                return new ControllerList();
            }
        }
        
        /**
         * Gets array of all "controller" elements
         * @deprecated
         */
        public x2.orgJpdl3.jbpm.Delegation[] getControllerArray()
        {
            synchronized (monitor())
            {
                check_orphaned();
                java.util.List<x2.orgJpdl3.jbpm.Delegation> targetList = new java.util.ArrayList<x2.orgJpdl3.jbpm.Delegation>();
                get_store().find_all_element_users(CONTROLLER$4, targetList);
                x2.orgJpdl3.jbpm.Delegation[] result = new x2.orgJpdl3.jbpm.Delegation[targetList.size()];
                targetList.toArray(result);
                return result;
            }
        }
        
        /**
         * Gets ith "controller" element
         */
        public x2.orgJpdl3.jbpm.Delegation getControllerArray(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.Delegation target = null;
                target = (x2.orgJpdl3.jbpm.Delegation)get_store().find_element_user(CONTROLLER$4, i);
                if (target == null)
                {
                    throw new IndexOutOfBoundsException();
                }
                return target;
            }
        }
        
        /**
         * Returns number of "controller" element
         */
        public int sizeOfControllerArray()
        {
            synchronized (monitor())
            {
                check_orphaned();
                return get_store().count_elements(CONTROLLER$4);
            }
        }
        
        /**
         * Sets array of all "controller" element
         */
        public void setControllerArray(x2.orgJpdl3.jbpm.Delegation[] controllerArray)
        {
            synchronized (monitor())
            {
                check_orphaned();
                arraySetterHelper(controllerArray, CONTROLLER$4);
            }
        }
        
        /**
         * Sets ith "controller" element
         */
        public void setControllerArray(int i, x2.orgJpdl3.jbpm.Delegation controller)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.Delegation target = null;
                target = (x2.orgJpdl3.jbpm.Delegation)get_store().find_element_user(CONTROLLER$4, i);
                if (target == null)
                {
                    throw new IndexOutOfBoundsException();
                }
                target.set(controller);
            }
        }
        
        /**
         * Inserts and returns a new empty value (as xml) as the ith "controller" element
         */
        public x2.orgJpdl3.jbpm.Delegation insertNewController(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.Delegation target = null;
                target = (x2.orgJpdl3.jbpm.Delegation)get_store().insert_element_user(CONTROLLER$4, i);
                return target;
            }
        }
        
        /**
         * Appends and returns a new empty value (as xml) as the last "controller" element
         */
        public x2.orgJpdl3.jbpm.Delegation addNewController()
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.Delegation target = null;
                target = (x2.orgJpdl3.jbpm.Delegation)get_store().add_element_user(CONTROLLER$4);
                return target;
            }
        }
        
        /**
         * Removes the ith "controller" element
         */
        public void removeController(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                get_store().remove_element(CONTROLLER$4, i);
            }
        }
        
        /**
         * Gets a List of "event" elements
         */
        public java.util.List<x2.orgJpdl3.jbpm.EventDocument.Event> getEventList()
        {
            final class EventList extends java.util.AbstractList<x2.orgJpdl3.jbpm.EventDocument.Event>
            {
                public x2.orgJpdl3.jbpm.EventDocument.Event get(int i)
                    { return TaskImpl.this.getEventArray(i); }
                
                public x2.orgJpdl3.jbpm.EventDocument.Event set(int i, x2.orgJpdl3.jbpm.EventDocument.Event o)
                {
                    x2.orgJpdl3.jbpm.EventDocument.Event old = TaskImpl.this.getEventArray(i);
                    TaskImpl.this.setEventArray(i, o);
                    return old;
                }
                
                public void add(int i, x2.orgJpdl3.jbpm.EventDocument.Event o)
                    { TaskImpl.this.insertNewEvent(i).set(o); }
                
                public x2.orgJpdl3.jbpm.EventDocument.Event remove(int i)
                {
                    x2.orgJpdl3.jbpm.EventDocument.Event old = TaskImpl.this.getEventArray(i);
                    TaskImpl.this.removeEvent(i);
                    return old;
                }
                
                public int size()
                    { return TaskImpl.this.sizeOfEventArray(); }
                
            }
            
            synchronized (monitor())
            {
                check_orphaned();
                return new EventList();
            }
        }
        
        /**
         * Gets array of all "event" elements
         * @deprecated
         */
        public x2.orgJpdl3.jbpm.EventDocument.Event[] getEventArray()
        {
            synchronized (monitor())
            {
                check_orphaned();
                java.util.List<x2.orgJpdl3.jbpm.EventDocument.Event> targetList = new java.util.ArrayList<x2.orgJpdl3.jbpm.EventDocument.Event>();
                get_store().find_all_element_users(EVENT$6, targetList);
                x2.orgJpdl3.jbpm.EventDocument.Event[] result = new x2.orgJpdl3.jbpm.EventDocument.Event[targetList.size()];
                targetList.toArray(result);
                return result;
            }
        }
        
        /**
         * Gets ith "event" element
         */
        public x2.orgJpdl3.jbpm.EventDocument.Event getEventArray(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.EventDocument.Event target = null;
                target = (x2.orgJpdl3.jbpm.EventDocument.Event)get_store().find_element_user(EVENT$6, i);
                if (target == null)
                {
                    throw new IndexOutOfBoundsException();
                }
                return target;
            }
        }
        
        /**
         * Returns number of "event" element
         */
        public int sizeOfEventArray()
        {
            synchronized (monitor())
            {
                check_orphaned();
                return get_store().count_elements(EVENT$6);
            }
        }
        
        /**
         * Sets array of all "event" element
         */
        public void setEventArray(x2.orgJpdl3.jbpm.EventDocument.Event[] eventArray)
        {
            synchronized (monitor())
            {
                check_orphaned();
                arraySetterHelper(eventArray, EVENT$6);
            }
        }
        
        /**
         * Sets ith "event" element
         */
        public void setEventArray(int i, x2.orgJpdl3.jbpm.EventDocument.Event event)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.EventDocument.Event target = null;
                target = (x2.orgJpdl3.jbpm.EventDocument.Event)get_store().find_element_user(EVENT$6, i);
                if (target == null)
                {
                    throw new IndexOutOfBoundsException();
                }
                target.set(event);
            }
        }
        
        /**
         * Inserts and returns a new empty value (as xml) as the ith "event" element
         */
        public x2.orgJpdl3.jbpm.EventDocument.Event insertNewEvent(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.EventDocument.Event target = null;
                target = (x2.orgJpdl3.jbpm.EventDocument.Event)get_store().insert_element_user(EVENT$6, i);
                return target;
            }
        }
        
        /**
         * Appends and returns a new empty value (as xml) as the last "event" element
         */
        public x2.orgJpdl3.jbpm.EventDocument.Event addNewEvent()
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.EventDocument.Event target = null;
                target = (x2.orgJpdl3.jbpm.EventDocument.Event)get_store().add_element_user(EVENT$6);
                return target;
            }
        }
        
        /**
         * Removes the ith "event" element
         */
        public void removeEvent(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                get_store().remove_element(EVENT$6, i);
            }
        }
        
        /**
         * Gets a List of "timer" elements
         */
        public java.util.List<x2.orgJpdl3.jbpm.TimerDocument.Timer> getTimerList()
        {
            final class TimerList extends java.util.AbstractList<x2.orgJpdl3.jbpm.TimerDocument.Timer>
            {
                public x2.orgJpdl3.jbpm.TimerDocument.Timer get(int i)
                    { return TaskImpl.this.getTimerArray(i); }
                
                public x2.orgJpdl3.jbpm.TimerDocument.Timer set(int i, x2.orgJpdl3.jbpm.TimerDocument.Timer o)
                {
                    x2.orgJpdl3.jbpm.TimerDocument.Timer old = TaskImpl.this.getTimerArray(i);
                    TaskImpl.this.setTimerArray(i, o);
                    return old;
                }
                
                public void add(int i, x2.orgJpdl3.jbpm.TimerDocument.Timer o)
                    { TaskImpl.this.insertNewTimer(i).set(o); }
                
                public x2.orgJpdl3.jbpm.TimerDocument.Timer remove(int i)
                {
                    x2.orgJpdl3.jbpm.TimerDocument.Timer old = TaskImpl.this.getTimerArray(i);
                    TaskImpl.this.removeTimer(i);
                    return old;
                }
                
                public int size()
                    { return TaskImpl.this.sizeOfTimerArray(); }
                
            }
            
            synchronized (monitor())
            {
                check_orphaned();
                return new TimerList();
            }
        }
        
        /**
         * Gets array of all "timer" elements
         * @deprecated
         */
        public x2.orgJpdl3.jbpm.TimerDocument.Timer[] getTimerArray()
        {
            synchronized (monitor())
            {
                check_orphaned();
                java.util.List<x2.orgJpdl3.jbpm.TimerDocument.Timer> targetList = new java.util.ArrayList<x2.orgJpdl3.jbpm.TimerDocument.Timer>();
                get_store().find_all_element_users(TIMER$8, targetList);
                x2.orgJpdl3.jbpm.TimerDocument.Timer[] result = new x2.orgJpdl3.jbpm.TimerDocument.Timer[targetList.size()];
                targetList.toArray(result);
                return result;
            }
        }
        
        /**
         * Gets ith "timer" element
         */
        public x2.orgJpdl3.jbpm.TimerDocument.Timer getTimerArray(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.TimerDocument.Timer target = null;
                target = (x2.orgJpdl3.jbpm.TimerDocument.Timer)get_store().find_element_user(TIMER$8, i);
                if (target == null)
                {
                    throw new IndexOutOfBoundsException();
                }
                return target;
            }
        }
        
        /**
         * Returns number of "timer" element
         */
        public int sizeOfTimerArray()
        {
            synchronized (monitor())
            {
                check_orphaned();
                return get_store().count_elements(TIMER$8);
            }
        }
        
        /**
         * Sets array of all "timer" element
         */
        public void setTimerArray(x2.orgJpdl3.jbpm.TimerDocument.Timer[] timerArray)
        {
            synchronized (monitor())
            {
                check_orphaned();
                arraySetterHelper(timerArray, TIMER$8);
            }
        }
        
        /**
         * Sets ith "timer" element
         */
        public void setTimerArray(int i, x2.orgJpdl3.jbpm.TimerDocument.Timer timer)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.TimerDocument.Timer target = null;
                target = (x2.orgJpdl3.jbpm.TimerDocument.Timer)get_store().find_element_user(TIMER$8, i);
                if (target == null)
                {
                    throw new IndexOutOfBoundsException();
                }
                target.set(timer);
            }
        }
        
        /**
         * Inserts and returns a new empty value (as xml) as the ith "timer" element
         */
        public x2.orgJpdl3.jbpm.TimerDocument.Timer insertNewTimer(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.TimerDocument.Timer target = null;
                target = (x2.orgJpdl3.jbpm.TimerDocument.Timer)get_store().insert_element_user(TIMER$8, i);
                return target;
            }
        }
        
        /**
         * Appends and returns a new empty value (as xml) as the last "timer" element
         */
        public x2.orgJpdl3.jbpm.TimerDocument.Timer addNewTimer()
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.TimerDocument.Timer target = null;
                target = (x2.orgJpdl3.jbpm.TimerDocument.Timer)get_store().add_element_user(TIMER$8);
                return target;
            }
        }
        
        /**
         * Removes the ith "timer" element
         */
        public void removeTimer(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                get_store().remove_element(TIMER$8, i);
            }
        }
        
        /**
         * Gets a List of "reminder" elements
         */
        public java.util.List<x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder> getReminderList()
        {
            final class ReminderList extends java.util.AbstractList<x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder>
            {
                public x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder get(int i)
                    { return TaskImpl.this.getReminderArray(i); }
                
                public x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder set(int i, x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder o)
                {
                    x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder old = TaskImpl.this.getReminderArray(i);
                    TaskImpl.this.setReminderArray(i, o);
                    return old;
                }
                
                public void add(int i, x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder o)
                    { TaskImpl.this.insertNewReminder(i).set(o); }
                
                public x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder remove(int i)
                {
                    x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder old = TaskImpl.this.getReminderArray(i);
                    TaskImpl.this.removeReminder(i);
                    return old;
                }
                
                public int size()
                    { return TaskImpl.this.sizeOfReminderArray(); }
                
            }
            
            synchronized (monitor())
            {
                check_orphaned();
                return new ReminderList();
            }
        }
        
        /**
         * Gets array of all "reminder" elements
         * @deprecated
         */
        public x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder[] getReminderArray()
        {
            synchronized (monitor())
            {
                check_orphaned();
                java.util.List<x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder> targetList = new java.util.ArrayList<x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder>();
                get_store().find_all_element_users(REMINDER$10, targetList);
                x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder[] result = new x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder[targetList.size()];
                targetList.toArray(result);
                return result;
            }
        }
        
        /**
         * Gets ith "reminder" element
         */
        public x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder getReminderArray(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder target = null;
                target = (x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder)get_store().find_element_user(REMINDER$10, i);
                if (target == null)
                {
                    throw new IndexOutOfBoundsException();
                }
                return target;
            }
        }
        
        /**
         * Returns number of "reminder" element
         */
        public int sizeOfReminderArray()
        {
            synchronized (monitor())
            {
                check_orphaned();
                return get_store().count_elements(REMINDER$10);
            }
        }
        
        /**
         * Sets array of all "reminder" element
         */
        public void setReminderArray(x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder[] reminderArray)
        {
            synchronized (monitor())
            {
                check_orphaned();
                arraySetterHelper(reminderArray, REMINDER$10);
            }
        }
        
        /**
         * Sets ith "reminder" element
         */
        public void setReminderArray(int i, x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder reminder)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder target = null;
                target = (x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder)get_store().find_element_user(REMINDER$10, i);
                if (target == null)
                {
                    throw new IndexOutOfBoundsException();
                }
                target.set(reminder);
            }
        }
        
        /**
         * Inserts and returns a new empty value (as xml) as the ith "reminder" element
         */
        public x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder insertNewReminder(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder target = null;
                target = (x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder)get_store().insert_element_user(REMINDER$10, i);
                return target;
            }
        }
        
        /**
         * Appends and returns a new empty value (as xml) as the last "reminder" element
         */
        public x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder addNewReminder()
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder target = null;
                target = (x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder)get_store().add_element_user(REMINDER$10);
                return target;
            }
        }
        
        /**
         * Removes the ith "reminder" element
         */
        public void removeReminder(int i)
        {
            synchronized (monitor())
            {
                check_orphaned();
                get_store().remove_element(REMINDER$10, i);
            }
        }
        
        /**
         * Gets the "name" attribute
         */
        public java.lang.String getName()
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(NAME$12);
                if (target == null)
                {
                    return null;
                }
                return target.getStringValue();
            }
        }
        
        /**
         * Gets (as xml) the "name" attribute
         */
        public org.apache.xmlbeans.XmlString xgetName()
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.XmlString target = null;
                target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(NAME$12);
                return target;
            }
        }
        
        /**
         * True if has "name" attribute
         */
        public boolean isSetName()
        {
            synchronized (monitor())
            {
                check_orphaned();
                return get_store().find_attribute_user(NAME$12) != null;
            }
        }
        
        /**
         * Sets the "name" attribute
         */
        public void setName(java.lang.String name)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(NAME$12);
                if (target == null)
                {
                    target = (org.apache.xmlbeans.SimpleValue)get_store().add_attribute_user(NAME$12);
                }
                target.setStringValue(name);
            }
        }
        
        /**
         * Sets (as xml) the "name" attribute
         */
        public void xsetName(org.apache.xmlbeans.XmlString name)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.XmlString target = null;
                target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(NAME$12);
                if (target == null)
                {
                    target = (org.apache.xmlbeans.XmlString)get_store().add_attribute_user(NAME$12);
                }
                target.set(name);
            }
        }
        
        /**
         * Unsets the "name" attribute
         */
        public void unsetName()
        {
            synchronized (monitor())
            {
                check_orphaned();
                get_store().remove_attribute(NAME$12);
            }
        }
        
        /**
         * Gets the "blocking" attribute
         */
        public x2.orgJpdl3.jbpm.BooleanType.Enum getBlocking()
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(BLOCKING$14);
                if (target == null)
                {
                    target = (org.apache.xmlbeans.SimpleValue)get_default_attribute_value(BLOCKING$14);
                }
                if (target == null)
                {
                    return null;
                }
                return (x2.orgJpdl3.jbpm.BooleanType.Enum)target.getEnumValue();
            }
        }
        
        /**
         * Gets (as xml) the "blocking" attribute
         */
        public x2.orgJpdl3.jbpm.BooleanType xgetBlocking()
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.BooleanType target = null;
                target = (x2.orgJpdl3.jbpm.BooleanType)get_store().find_attribute_user(BLOCKING$14);
                if (target == null)
                {
                    target = (x2.orgJpdl3.jbpm.BooleanType)get_default_attribute_value(BLOCKING$14);
                }
                return target;
            }
        }
        
        /**
         * True if has "blocking" attribute
         */
        public boolean isSetBlocking()
        {
            synchronized (monitor())
            {
                check_orphaned();
                return get_store().find_attribute_user(BLOCKING$14) != null;
            }
        }
        
        /**
         * Sets the "blocking" attribute
         */
        public void setBlocking(x2.orgJpdl3.jbpm.BooleanType.Enum blocking)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(BLOCKING$14);
                if (target == null)
                {
                    target = (org.apache.xmlbeans.SimpleValue)get_store().add_attribute_user(BLOCKING$14);
                }
                target.setEnumValue(blocking);
            }
        }
        
        /**
         * Sets (as xml) the "blocking" attribute
         */
        public void xsetBlocking(x2.orgJpdl3.jbpm.BooleanType blocking)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.BooleanType target = null;
                target = (x2.orgJpdl3.jbpm.BooleanType)get_store().find_attribute_user(BLOCKING$14);
                if (target == null)
                {
                    target = (x2.orgJpdl3.jbpm.BooleanType)get_store().add_attribute_user(BLOCKING$14);
                }
                target.set(blocking);
            }
        }
        
        /**
         * Unsets the "blocking" attribute
         */
        public void unsetBlocking()
        {
            synchronized (monitor())
            {
                check_orphaned();
                get_store().remove_attribute(BLOCKING$14);
            }
        }
        
        /**
         * Gets the "signalling" attribute
         */
        public x2.orgJpdl3.jbpm.BooleanType.Enum getSignalling()
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(SIGNALLING$16);
                if (target == null)
                {
                    target = (org.apache.xmlbeans.SimpleValue)get_default_attribute_value(SIGNALLING$16);
                }
                if (target == null)
                {
                    return null;
                }
                return (x2.orgJpdl3.jbpm.BooleanType.Enum)target.getEnumValue();
            }
        }
        
        /**
         * Gets (as xml) the "signalling" attribute
         */
        public x2.orgJpdl3.jbpm.BooleanType xgetSignalling()
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.BooleanType target = null;
                target = (x2.orgJpdl3.jbpm.BooleanType)get_store().find_attribute_user(SIGNALLING$16);
                if (target == null)
                {
                    target = (x2.orgJpdl3.jbpm.BooleanType)get_default_attribute_value(SIGNALLING$16);
                }
                return target;
            }
        }
        
        /**
         * True if has "signalling" attribute
         */
        public boolean isSetSignalling()
        {
            synchronized (monitor())
            {
                check_orphaned();
                return get_store().find_attribute_user(SIGNALLING$16) != null;
            }
        }
        
        /**
         * Sets the "signalling" attribute
         */
        public void setSignalling(x2.orgJpdl3.jbpm.BooleanType.Enum signalling)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(SIGNALLING$16);
                if (target == null)
                {
                    target = (org.apache.xmlbeans.SimpleValue)get_store().add_attribute_user(SIGNALLING$16);
                }
                target.setEnumValue(signalling);
            }
        }
        
        /**
         * Sets (as xml) the "signalling" attribute
         */
        public void xsetSignalling(x2.orgJpdl3.jbpm.BooleanType signalling)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.BooleanType target = null;
                target = (x2.orgJpdl3.jbpm.BooleanType)get_store().find_attribute_user(SIGNALLING$16);
                if (target == null)
                {
                    target = (x2.orgJpdl3.jbpm.BooleanType)get_store().add_attribute_user(SIGNALLING$16);
                }
                target.set(signalling);
            }
        }
        
        /**
         * Unsets the "signalling" attribute
         */
        public void unsetSignalling()
        {
            synchronized (monitor())
            {
                check_orphaned();
                get_store().remove_attribute(SIGNALLING$16);
            }
        }
        
        /**
         * Gets the "description" attribute
         */
        public java.lang.String getDescription2()
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(DESCRIPTION2$18);
                if (target == null)
                {
                    return null;
                }
                return target.getStringValue();
            }
        }
        
        /**
         * Gets (as xml) the "description" attribute
         */
        public org.apache.xmlbeans.XmlString xgetDescription2()
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.XmlString target = null;
                target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(DESCRIPTION2$18);
                return target;
            }
        }
        
        /**
         * True if has "description" attribute
         */
        public boolean isSetDescription2()
        {
            synchronized (monitor())
            {
                check_orphaned();
                return get_store().find_attribute_user(DESCRIPTION2$18) != null;
            }
        }
        
        /**
         * Sets the "description" attribute
         */
        public void setDescription2(java.lang.String description2)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(DESCRIPTION2$18);
                if (target == null)
                {
                    target = (org.apache.xmlbeans.SimpleValue)get_store().add_attribute_user(DESCRIPTION2$18);
                }
                target.setStringValue(description2);
            }
        }
        
        /**
         * Sets (as xml) the "description" attribute
         */
        public void xsetDescription2(org.apache.xmlbeans.XmlString description2)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.XmlString target = null;
                target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(DESCRIPTION2$18);
                if (target == null)
                {
                    target = (org.apache.xmlbeans.XmlString)get_store().add_attribute_user(DESCRIPTION2$18);
                }
                target.set(description2);
            }
        }
        
        /**
         * Unsets the "description" attribute
         */
        public void unsetDescription2()
        {
            synchronized (monitor())
            {
                check_orphaned();
                get_store().remove_attribute(DESCRIPTION2$18);
            }
        }
        
        /**
         * Gets the "duedate" attribute
         */
        public java.lang.String getDuedate()
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(DUEDATE$20);
                if (target == null)
                {
                    return null;
                }
                return target.getStringValue();
            }
        }
        
        /**
         * Gets (as xml) the "duedate" attribute
         */
        public org.apache.xmlbeans.XmlString xgetDuedate()
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.XmlString target = null;
                target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(DUEDATE$20);
                return target;
            }
        }
        
        /**
         * True if has "duedate" attribute
         */
        public boolean isSetDuedate()
        {
            synchronized (monitor())
            {
                check_orphaned();
                return get_store().find_attribute_user(DUEDATE$20) != null;
            }
        }
        
        /**
         * Sets the "duedate" attribute
         */
        public void setDuedate(java.lang.String duedate)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(DUEDATE$20);
                if (target == null)
                {
                    target = (org.apache.xmlbeans.SimpleValue)get_store().add_attribute_user(DUEDATE$20);
                }
                target.setStringValue(duedate);
            }
        }
        
        /**
         * Sets (as xml) the "duedate" attribute
         */
        public void xsetDuedate(org.apache.xmlbeans.XmlString duedate)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.XmlString target = null;
                target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(DUEDATE$20);
                if (target == null)
                {
                    target = (org.apache.xmlbeans.XmlString)get_store().add_attribute_user(DUEDATE$20);
                }
                target.set(duedate);
            }
        }
        
        /**
         * Unsets the "duedate" attribute
         */
        public void unsetDuedate()
        {
            synchronized (monitor())
            {
                check_orphaned();
                get_store().remove_attribute(DUEDATE$20);
            }
        }
        
        /**
         * Gets the "swimlane" attribute
         */
        public java.lang.String getSwimlane()
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(SWIMLANE$22);
                if (target == null)
                {
                    return null;
                }
                return target.getStringValue();
            }
        }
        
        /**
         * Gets (as xml) the "swimlane" attribute
         */
        public org.apache.xmlbeans.XmlString xgetSwimlane()
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.XmlString target = null;
                target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(SWIMLANE$22);
                return target;
            }
        }
        
        /**
         * True if has "swimlane" attribute
         */
        public boolean isSetSwimlane()
        {
            synchronized (monitor())
            {
                check_orphaned();
                return get_store().find_attribute_user(SWIMLANE$22) != null;
            }
        }
        
        /**
         * Sets the "swimlane" attribute
         */
        public void setSwimlane(java.lang.String swimlane)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(SWIMLANE$22);
                if (target == null)
                {
                    target = (org.apache.xmlbeans.SimpleValue)get_store().add_attribute_user(SWIMLANE$22);
                }
                target.setStringValue(swimlane);
            }
        }
        
        /**
         * Sets (as xml) the "swimlane" attribute
         */
        public void xsetSwimlane(org.apache.xmlbeans.XmlString swimlane)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.XmlString target = null;
                target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(SWIMLANE$22);
                if (target == null)
                {
                    target = (org.apache.xmlbeans.XmlString)get_store().add_attribute_user(SWIMLANE$22);
                }
                target.set(swimlane);
            }
        }
        
        /**
         * Unsets the "swimlane" attribute
         */
        public void unsetSwimlane()
        {
            synchronized (monitor())
            {
                check_orphaned();
                get_store().remove_attribute(SWIMLANE$22);
            }
        }
        
        /**
         * Gets the "priority" attribute
         */
        public java.lang.Object getPriority()
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(PRIORITY$24);
                if (target == null)
                {
                    target = (org.apache.xmlbeans.SimpleValue)get_default_attribute_value(PRIORITY$24);
                }
                if (target == null)
                {
                    return null;
                }
                return target.getObjectValue();
            }
        }
        
        /**
         * Gets (as xml) the "priority" attribute
         */
        public x2.orgJpdl3.jbpm.PriorityType xgetPriority()
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.PriorityType target = null;
                target = (x2.orgJpdl3.jbpm.PriorityType)get_store().find_attribute_user(PRIORITY$24);
                if (target == null)
                {
                    target = (x2.orgJpdl3.jbpm.PriorityType)get_default_attribute_value(PRIORITY$24);
                }
                return target;
            }
        }
        
        /**
         * True if has "priority" attribute
         */
        public boolean isSetPriority()
        {
            synchronized (monitor())
            {
                check_orphaned();
                return get_store().find_attribute_user(PRIORITY$24) != null;
            }
        }
        
        /**
         * Sets the "priority" attribute
         */
        public void setPriority(java.lang.Object priority)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(PRIORITY$24);
                if (target == null)
                {
                    target = (org.apache.xmlbeans.SimpleValue)get_store().add_attribute_user(PRIORITY$24);
                }
                target.setObjectValue(priority);
            }
        }
        
        /**
         * Sets (as xml) the "priority" attribute
         */
        public void xsetPriority(x2.orgJpdl3.jbpm.PriorityType priority)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.PriorityType target = null;
                target = (x2.orgJpdl3.jbpm.PriorityType)get_store().find_attribute_user(PRIORITY$24);
                if (target == null)
                {
                    target = (x2.orgJpdl3.jbpm.PriorityType)get_store().add_attribute_user(PRIORITY$24);
                }
                target.set(priority);
            }
        }
        
        /**
         * Unsets the "priority" attribute
         */
        public void unsetPriority()
        {
            synchronized (monitor())
            {
                check_orphaned();
                get_store().remove_attribute(PRIORITY$24);
            }
        }
        
        /**
         * Gets the "notify" attribute
         */
        public x2.orgJpdl3.jbpm.BooleanType.Enum getNotify()
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(NOTIFY$26);
                if (target == null)
                {
                    target = (org.apache.xmlbeans.SimpleValue)get_default_attribute_value(NOTIFY$26);
                }
                if (target == null)
                {
                    return null;
                }
                return (x2.orgJpdl3.jbpm.BooleanType.Enum)target.getEnumValue();
            }
        }
        
        /**
         * Gets (as xml) the "notify" attribute
         */
        public x2.orgJpdl3.jbpm.BooleanType xgetNotify()
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.BooleanType target = null;
                target = (x2.orgJpdl3.jbpm.BooleanType)get_store().find_attribute_user(NOTIFY$26);
                if (target == null)
                {
                    target = (x2.orgJpdl3.jbpm.BooleanType)get_default_attribute_value(NOTIFY$26);
                }
                return target;
            }
        }
        
        /**
         * True if has "notify" attribute
         */
        public boolean isSetNotify()
        {
            synchronized (monitor())
            {
                check_orphaned();
                return get_store().find_attribute_user(NOTIFY$26) != null;
            }
        }
        
        /**
         * Sets the "notify" attribute
         */
        public void setNotify(x2.orgJpdl3.jbpm.BooleanType.Enum notify)
        {
            synchronized (monitor())
            {
                check_orphaned();
                org.apache.xmlbeans.SimpleValue target = null;
                target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(NOTIFY$26);
                if (target == null)
                {
                    target = (org.apache.xmlbeans.SimpleValue)get_store().add_attribute_user(NOTIFY$26);
                }
                target.setEnumValue(notify);
            }
        }
        
        /**
         * Sets (as xml) the "notify" attribute
         */
        public void xsetNotify(x2.orgJpdl3.jbpm.BooleanType notify)
        {
            synchronized (monitor())
            {
                check_orphaned();
                x2.orgJpdl3.jbpm.BooleanType target = null;
                target = (x2.orgJpdl3.jbpm.BooleanType)get_store().find_attribute_user(NOTIFY$26);
                if (target == null)
                {
                    target = (x2.orgJpdl3.jbpm.BooleanType)get_store().add_attribute_user(NOTIFY$26);
                }
                target.set(notify);
            }
        }
        
        /**
         * Unsets the "notify" attribute
         */
        public void unsetNotify()
        {
            synchronized (monitor())
            {
                check_orphaned();
                get_store().remove_attribute(NOTIFY$26);
            }
        }
        /**
         * An XML reminder(@urn:jbpm.org:jpdl-3.2).
         *
         * This is a complex type.
         */
        public static class ReminderImpl extends org.apache.xmlbeans.impl.values.XmlComplexContentImpl implements x2.orgJpdl3.jbpm.TaskDocument.Task.Reminder
        {
            private static final long serialVersionUID = 1L;
            
            public ReminderImpl(org.apache.xmlbeans.SchemaType sType)
            {
                super(sType);
            }
            
            private static final javax.xml.namespace.QName DUEDATE$0 = 
                new javax.xml.namespace.QName("", "duedate");
            private static final javax.xml.namespace.QName REPEAT$2 = 
                new javax.xml.namespace.QName("", "repeat");
            
            
            /**
             * Gets the "duedate" attribute
             */
            public java.lang.String getDuedate()
            {
                synchronized (monitor())
                {
                    check_orphaned();
                    org.apache.xmlbeans.SimpleValue target = null;
                    target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(DUEDATE$0);
                    if (target == null)
                    {
                      return null;
                    }
                    return target.getStringValue();
                }
            }
            
            /**
             * Gets (as xml) the "duedate" attribute
             */
            public org.apache.xmlbeans.XmlString xgetDuedate()
            {
                synchronized (monitor())
                {
                    check_orphaned();
                    org.apache.xmlbeans.XmlString target = null;
                    target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(DUEDATE$0);
                    return target;
                }
            }
            
            /**
             * Sets the "duedate" attribute
             */
            public void setDuedate(java.lang.String duedate)
            {
                synchronized (monitor())
                {
                    check_orphaned();
                    org.apache.xmlbeans.SimpleValue target = null;
                    target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(DUEDATE$0);
                    if (target == null)
                    {
                      target = (org.apache.xmlbeans.SimpleValue)get_store().add_attribute_user(DUEDATE$0);
                    }
                    target.setStringValue(duedate);
                }
            }
            
            /**
             * Sets (as xml) the "duedate" attribute
             */
            public void xsetDuedate(org.apache.xmlbeans.XmlString duedate)
            {
                synchronized (monitor())
                {
                    check_orphaned();
                    org.apache.xmlbeans.XmlString target = null;
                    target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(DUEDATE$0);
                    if (target == null)
                    {
                      target = (org.apache.xmlbeans.XmlString)get_store().add_attribute_user(DUEDATE$0);
                    }
                    target.set(duedate);
                }
            }
            
            /**
             * Gets the "repeat" attribute
             */
            public java.lang.String getRepeat()
            {
                synchronized (monitor())
                {
                    check_orphaned();
                    org.apache.xmlbeans.SimpleValue target = null;
                    target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(REPEAT$2);
                    if (target == null)
                    {
                      return null;
                    }
                    return target.getStringValue();
                }
            }
            
            /**
             * Gets (as xml) the "repeat" attribute
             */
            public org.apache.xmlbeans.XmlString xgetRepeat()
            {
                synchronized (monitor())
                {
                    check_orphaned();
                    org.apache.xmlbeans.XmlString target = null;
                    target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(REPEAT$2);
                    return target;
                }
            }
            
            /**
             * True if has "repeat" attribute
             */
            public boolean isSetRepeat()
            {
                synchronized (monitor())
                {
                    check_orphaned();
                    return get_store().find_attribute_user(REPEAT$2) != null;
                }
            }
            
            /**
             * Sets the "repeat" attribute
             */
            public void setRepeat(java.lang.String repeat)
            {
                synchronized (monitor())
                {
                    check_orphaned();
                    org.apache.xmlbeans.SimpleValue target = null;
                    target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(REPEAT$2);
                    if (target == null)
                    {
                      target = (org.apache.xmlbeans.SimpleValue)get_store().add_attribute_user(REPEAT$2);
                    }
                    target.setStringValue(repeat);
                }
            }
            
            /**
             * Sets (as xml) the "repeat" attribute
             */
            public void xsetRepeat(org.apache.xmlbeans.XmlString repeat)
            {
                synchronized (monitor())
                {
                    check_orphaned();
                    org.apache.xmlbeans.XmlString target = null;
                    target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(REPEAT$2);
                    if (target == null)
                    {
                      target = (org.apache.xmlbeans.XmlString)get_store().add_attribute_user(REPEAT$2);
                    }
                    target.set(repeat);
                }
            }
            
            /**
             * Unsets the "repeat" attribute
             */
            public void unsetRepeat()
            {
                synchronized (monitor())
                {
                    check_orphaned();
                    get_store().remove_attribute(REPEAT$2);
                }
            }
        }
    }
}
